package redis;

import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;
import redis.clients.jedis.JedisPoolConfig;
import redis.clients.jedis.JedisPubSub;
import redis.clients.jedis.commands.JedisCommands;


public class JedisConnectPool {
    // Jedispool
//    static Jedis jedis;
//    static JedisCommands jedisCommands;
    JedisPool jedisPool;
    static JedisPoolConfig jedisPoolConfig = new JedisPoolConfig();
    static String ip = "golxen.com";
    static String password="153578456";
    static int port = 6379;
    static int timeout = 2000;
    static int dbIndex=1;

    public JedisConnectPool() {
        // 初始化jedis
        // 设置配置

        //控制一个pool最多有多少个状态为idle(空闲的)的jedis实例，默认值也是8。

        //可用连接实例的最大数目，默认值为8；
        //如果赋值为-1，则表示不限制；如果pool已经分配了maxActive个jedis实例，则此时pool的状态为exhausted(耗尽)。
        jedisPoolConfig.setMaxTotal(8);
        //最小空闲连接数, 默认0
        jedisPoolConfig.setMinIdle(0);
        //最大空闲连接数, 默认8个
        jedisPoolConfig.setMaxIdle(8);
        //是否开启jmx监控，，默认true
        jedisPoolConfig.setJmxEnabled(true);
        //向资源池借用连接时是否检测连接有效性（ping），无效连接会被移除，默认false
        jedisPoolConfig.setTestOnBorrow(true);//jedis 第一次启动时，会报错
        //向资源池归还连接时是否检测连接有效性（ping），无效连接会被移除，默认false
        jedisPoolConfig.setTestOnReturn(true);
        //客户端超时时间
//        jedisPoolConfig.setTimeOut;
        //在空闲时检查有效性, 默认false
        jedisPoolConfig.setTestWhileIdle(true);


        // 初始化JedisPool
        jedisPool = new JedisPool(jedisPoolConfig, ip, port, timeout,password,dbIndex);

    }

    public Jedis getJedis(){
        return jedisPool.getResource();
    }

//    public void setValue(String key, String value) {
//        jedisCommands.setex(key,60,value);
//    }
//
//    public String getValue(String key) {
//        return jedisCommands.get(key);
//    }
//
//    public void addSet(String key,String value){
//        jedisCommands.sadd(key,value);
//    }
//
//    public long delSet(String key,String value){
//        return jedisCommands.srem(key,value);
//    }
//
//    public boolean isMember(String key,String value){
//        return jedisCommands.sismember(key,value);
//    }
//
//    public long getSetLength(String key){
//        return jedisCommands.scard(key);
//    }
//
//    public void delOpenId(String key){
//        jedisCommands.del(key);
//    }
//
//    public void publishQue(String channel,String massage){
//        jedis.publish(channel,massage);
//    }
//
//    public void psubscribe(JedisPubSub jedisPubSub,String channel){
//        jedis.psubscribe(jedisPubSub,channel);
//    }

}
